במהלך הריאיון התבקשתי לספר על עצמי ועל פרויקטים שעשיתי (בחרתי בפרויקט הראשון במבוזרות + הפרויקט של אתר האינטרנט). לאחר מכן נשאלה השאלה החשיבתית הבאה:
נתונה מערכת שצריכה לקבל מספרים בסדר עולה לפי הסדר ממקומות שונים בעולם.
זמן הגעת המספרים ממדינות שונות למערכת משתנה, לדוגמא:
המרחק מישראל למערכת הוא 4, והמספרים שנשלחים מישראל הם 3,1,2,4.
לכן, ניתן את המספרים למערכת בסדר הבא: 1,2,3,4 אך נשים לב שהם יגיעו בזמנים : 5,6,7,8. בגלל המרחק של ישראל מהמרחק. דוגמא נוספת:
המרחק מישראל למערכת הוא 4, והמספרים שנשלחים מישראל הם 11,15,8,10 ובנוסף המרחק ממצרים למערכת הוא 2 והמספרים הנשלחים הם 7,16. לכן המספרים יגיעו בסדר הבא:
מימין לשמאל: 7 (מצריים) יגיע בזמן 9, 8 (ישראל) יגיע בזמן 12, 10 (ישראל) יגיע בזמן 14,
11 (ישראל) יגיע ב15, 16 (מצרים) יגיע ב18, 15 ישראל יגיע ב19.
תאר מבנה נתונים יעיל שיתאים למציאת האיבר הבא.
תשובות
הוסף תשובה
|
לצפיה בתשובות
מאי 2018
כעת בשביל למצוא את האיבר הבא יש לעבור על מבנה הנתונים של כל מדינה, ולבדוק מה המספר המינימלי בהוספת ה offset מבין כל המדינות.
ההכנסה של מספר ממדינה מסויימת יתבצע כך שהמספר יכנס למדינה המתאימה ובמקום המתאים לו בכדי לשמור הסדר הממוין.
מאי 2018
נשתמש ברשימה מקושרת עבור המספרים של כל המדינות. בכל node יהיו המספר המקורי שצריך להיכתב וה offset (שהוא המספר המקורי + המרחק).
הכנסת האיברים לרשימה תשמור על סדר עולה לפי ה offset וכך ניתן לדעת מה האיבר הבא ברשימה.
צריך לשים לב בתיאור השאלה שמספר 16 נכנס לפני מספר 15 בגלל חישוב המרחק. כלומר עבור 15 שהגיע מישראל ה offset יהיה 19 ועבור 16 שהגיע ממצריים ה offset יהיה 18 ולכן 16 יכנס קודם.
לכן אפשר להשתמש ברשימה אחת לכל המדינות